#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "key.h"
//#include "OLED_Font.h"
// 窗口看门狗

int main(void){
	OLED_Init();
	Key_Init();
	//开启对于时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
	
	OLED_ShowString(1,1,"WWDG TEST");
	if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST)==SET){
		
		OLED_ShowString(2,1,"WWDGRST");
		Delay_ms(500);
		OLED_ShowString(2,1,"       ");
		Delay_ms(100);
		
		RCC_ClearFlag();
	}
	else{
		OLED_ShowString(3,1,"REST");
		Delay_ms(500);
		OLED_ShowString(3,1,"    ");
		Delay_ms(100);
	}
	//配置初始化：预分频器和窗口值：根据公式，确定想要的超时时间:50ms（最晚时间）和窗口时间:30ms（最早时间）
	//所以预分频GTB为8，控制寄存器T[0:5]为54，窗口值W[0:5]为21
	WWDG_SetPrescaler(WWDG_Prescaler_8);
	WWDG_SetWindowValue(0x40|21); //同理T[:]
	//使能
	WWDG_Enable(0x40|54);//0x40|T[0:5]：使T[6]为1
	
	while(1){
		Key_GetNum();
		//喂狗
		//但是如果喂狗放在这里，则会与使能第一次喂狗太近了，从而触发看门狗复位
		//	WWDG_SetCounter(0x40|54);//会把CR中的WDGA清零0，但是不是关闭看门狗
		
//		OLED_ShowString(4,1,"FEED");
//		Delay_ms(20);
//		OLED_ShowString(4,1,"    ");
		Delay_ms(31);
		WWDG_SetCounter(0x40|54);
	}
}
